package main

import "fmt"

func main() {
	ch1 := make(chan int, 2)
	// 发送方
	go func() {
		for i := 0; i < 10; i++ {
			fmt.Printf("发送方发送数据: %v \n", i)
			ch1 <- i
		}
		fmt.Println("发送方: 关闭channel...")
		close(ch1)
	}()

	// 接收方
	for {
		elem, ok := <-ch1
		if !ok {
			fmt.Println("*接收方*: 检测到发送方已经关闭了channel")
			break
		}
		fmt.Printf("*接收方接收数据*: %v \n", elem)
	}

	fmt.Println("执行完成")
}

/*
发送方发送数据: 0
发送方发送数据: 1
发送方发送数据: 2
发送方发送数据: 3
*接收方接收数据*: 0
*接收方接收数据*: 1
*接收方接收数据*: 2
*接收方接收数据*: 3
发送方发送数据: 4
发送方发送数据: 5
发送方发送数据: 6
发送方发送数据: 7
*接收方接收数据*: 4
*接收方接收数据*: 5
*接收方接收数据*: 6
*接收方接收数据*: 7
发送方发送数据: 8
发送方发送数据: 9
发送方: 关闭channel...
*接收方接收数据*: 8
*接收方接收数据*: 9
*接收方*: 检测到发送方已经关闭了channel
执行完成
*/
